Memory based attacks are a significant threat to the security of information processing systems. Some such attacks involve storing malicious code, such as a virus or a worm, in the memory of a computer system, then exploiting bugs and/or buffer overflows while running legitimate programs to transfer control to the malicious code. One approach to preventing this type of attack is to include an “execute disable” bit in a page table entry that may be used to designate pages where data is stored as non-executable, so that malicious code could not be stored as data and subsequently executed within the same physical, linear or logical memory space.
Additional approaches include using memory page tables to store “color” attributes that are associated with agents (reflective of their security and/or privilege domains) to logically partition memory at a fine enough granularity to prevent an agent of one color from accessing memory associated with another. This approach, however, is limited to assigning relatively few “colors” (and therefore relatively few security enclaves) because of the limited number of bits available in page tables. Further, advances in processor technology may eliminate the availability of these bits as “color” indicators.